package br.com.projetosivan.controller;

import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.model.DataModel;
import javax.faces.model.ListDataModel;

import br.com.projetosivan.dao.TipoProdutoDao;
import br.com.projetosivan.dao.impl.TipoProdutoDaoImp;
import br.com.projetosivan.model.TipoProduto;

@ManagedBean
@SessionScoped
public class TipoProdutoController {

    private TipoProduto tipoProduto;
    private Long tipoProdutoPai = new Long(0);
    private DataModel listaTipoProdutos;
    
    public DataModel getListarTipoProdutos() {
        List<TipoProduto> lista = new TipoProdutoDaoImp().list();
        listaTipoProdutos = new ListDataModel(lista);
        return listaTipoProdutos;
    }
    
    
    public Long getTipoProdutoPai() {
		return tipoProdutoPai;
	}


	public void setTipoProdutoPai(Long tipoProdutoPai) {
		this.tipoProdutoPai = tipoProdutoPai;
	}


	public TipoProduto getTipoProduto() {
        return tipoProduto;
    }
    public void setTipoProduto(TipoProduto tipoProduto) {
        this.tipoProduto = tipoProduto;
    }
    
    public String prepararAdicionarTipoProduto(){
        tipoProduto = new TipoProduto();
        tipoProdutoPai = new Long(0);
        return "gerenciarTipoProduto";
    }
    public String prepararAlterarTipoProduto(){
        tipoProduto = (TipoProduto)(listaTipoProdutos.getRowData());
        if(tipoProduto.getTipoProdutoPai() != null){
        	 tipoProdutoPai = tipoProduto.getTipoProdutoPai().getId();
        }else{
        	tipoProdutoPai = new Long(0);
        }
        return "gerenciarTipoProduto";
    }
    public String excluirTipoProduto(){
        TipoProduto tipoProdutoTemp = (TipoProduto)(listaTipoProdutos.getRowData());
        TipoProdutoDao dao = new TipoProdutoDaoImp();
        dao.remove(tipoProdutoTemp);
        return "cadastrarTipoProduto";
    }
    public String adicionarTipoProduto(){
        TipoProdutoDao dao = new TipoProdutoDaoImp();
        if(tipoProdutoPai != null && tipoProdutoPai != 0){
            tipoProduto.setTipoProdutoPai(new TipoProduto());
            tipoProduto.getTipoProdutoPai().setId(tipoProdutoPai);
        }
        dao.save(tipoProduto);
        return "cadastrarTipoProduto";
    }
    public String alterarTipoProduto(){
        TipoProdutoDao dao = new TipoProdutoDaoImp();
        if(tipoProdutoPai != null && tipoProdutoPai != 0){
	        tipoProduto.setTipoProdutoPai(new TipoProduto());
	        tipoProduto.getTipoProdutoPai().setId(tipoProdutoPai);
        }
        dao.update(tipoProduto);
        return "cadastrarTipoProduto";
    }
    
    public List<TipoProduto> getProdutoPaiMenu(){
    	return new TipoProdutoDaoImp().listTipoProdutoPaiNull();
    }
    
    public List<TipoProduto> getTipoProdutoByIdPai(Long id){
    	return new TipoProdutoDaoImp().getTipoProdutoByIdPai(id);
    }
}